Add GTK_TARGET_OTHER_{APP,WIDGET} to restrict drags within an
authorMatthias Clasen <mclasen@redhat.com>
Sat, 28 Apr 2007 15:34:39 +0000 (15:34 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 28 Apr 2007 15:34:39 +0000 (15:34 +0000)
2007-04-28  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkdnd.[hc]: Add GTK_TARGET_OTHER_{APP,WIDGET} to
        restrict drags within an application/widget.  (#163141,
        Jorn Baayen)

svn path=/trunk/; revision=17676

ChangeLog
docs/reference/ChangeLog
docs/reference/gtk/tmpl/gtkdnd.sgml
gtk/gtkdnd.c
gtk/gtkdnd.h

index c29fb4aada014795ae823a1f86caaf0ba9778b6b..24cee1cfa7e2ce7ce9a6d3fd37dfb51e2d26610e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkdnd.[hc]: Add GTK_TARGET_OTHER_{APP,WIDGET} to
+       restrict drags within an application/widget.  (#163141, 
+       Jorn Baayen)
+
 2007-04-28  Matthias Clasen  <mclasen@redhat.com>
 
        * docs/tools/Makefile.am:
index f4bbd1553d8aedefc84f9bf7f881d1394917521e..65d951a1176f7a0d6ff37d270e079f2a6ad5c692 100644 (file)
@@ -1,3 +1,7 @@
+2007-04-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/tmpl/gtkdnd.sgml: Document GTK_TARGET_OTHER_*
+
 2007-04-26  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/tmpl/gtkcomboboxentry.sgml: Mention that the entry
index 91aa05f8ced2d04c9cdff2d63d4999f52365787b..f804becdc97c1d7522780a24aacb3e766841ede7 100644 (file)
@@ -69,6 +69,12 @@ constraints on an entry in a #GtkTargetTable.
 @GTK_TARGET_SAME_WIDGET: 
    If this is set, the target will only be selected
    for drags within a single widget.
+@GTK_TARGET_OTHER_APP:
+   If this is set, the target will not be selected
+   for drags within a single application. Since 2.12
+@GTK_TARGET_OTHER_WIDGET:
+   If this is set, the target will not be selected
+   for drags withing a single widget. Since 2.12
 
 <!-- ##### FUNCTION gtk_drag_dest_set ##### -->
 <para>
index e227b69477d2f5b9c9f11e7fa7994c18c9d35d03..31d1d9233edce8cbf9b38571270abdbfb9d26b91 100644 (file)
@@ -1520,7 +1520,9 @@ gtk_drag_dest_find_target (GtkWidget      *widget,
          if (tmp_source->data == GUINT_TO_POINTER (pair->target))
            {
              if ((!(pair->flags & GTK_TARGET_SAME_APP) || source_widget) &&
-                 (!(pair->flags & GTK_TARGET_SAME_WIDGET) || (source_widget == widget)))
+                 (!(pair->flags & GTK_TARGET_SAME_WIDGET) || (source_widget == widget)) &&
+                  (!(pair->flags & GTK_TARGET_OTHER_APP) || !source_widget) &&
+                  (!(pair->flags & GTK_TARGET_OTHER_WIDGET) || (source_widget != widget)))
                return pair->target;
              else
                break;
index 626ef00597fa6126043fb9469273cb132caaa4f0..f9119060b50e144065af738fda2956263a18ce09 100644 (file)
@@ -46,7 +46,9 @@ typedef enum {
  */
 typedef enum {
   GTK_TARGET_SAME_APP = 1 << 0,    /*< nick=same-app >*/
-  GTK_TARGET_SAME_WIDGET = 1 << 1  /*< nick=same-widget >*/
+  GTK_TARGET_SAME_WIDGET = 1 << 1, /*< nick=same-widget >*/
+  GTK_TARGET_OTHER_APP = 1 << 2,   /*< nick=other-app >*/
+  GTK_TARGET_OTHER_WIDGET = 1 << 3 /*< nick=other-widget >*/
 } GtkTargetFlags;
 
 /* Destination side */